//导入express包
const express = require('express');
//导入检测登录中间件
const CheckLogin = require('../../midleware/CheckLogin')
//获取date-fns包的format方法
const { format } = require('date-fns')
//导入db文件
const { pool } = require('../../db/db')

//创建路由对象
const router = express.Router();

//响应首页
router.get('/', CheckLogin, (req, res) => {
    // //读取events集合下的全部文档-MongoDB
    // EventModel.find((err, data) => {
    //     //获取全部数据
    //     const arr = data
    //     //使用ejs渲染
    //     res.render('index', { arr, n: arr.length })
    // })
    //--------------------------------------------------------------------------------
    //读取events集合下的全部文档-MySQL
    // //定义sql语句
    // const sqlStr = 'select * from events'
    // //读取数据
    // pool.query(sqlStr, (err, data) => {
    //     //操作失败
    //     if (err) return console.log('操作失败...' + err.message)
    //     //获取全部数据
    //     const arr = data
    //     //使用ejs渲染
    //     res.render('index', { arr, n: arr.length })
    // })
    //--------------------------------------------------------------------------------
    //读取登录用户在events集合下的全部文档-MongoDB
    // EventModel.find({ userId: req.session.user.userId }, (err, data) => {
    //     console.log(data)

    //     //获取全部数据
    //     const arr = data
    //     //使用ejs渲染
    //     res.render('index', { arr, n: arr.length })
    // })
    //--------------------------------------------------------------------------------
    //读取登录用户在events集合下的全部文档-MySQL
    //定义sql语句
    const sqlStr = 'select * from events where userId=?'
    //获取全部数据
    pool.query(sqlStr, req.session.user.userId, (err, data) => {
        //操作失败
        if (err) return console.log('操作失败...' + err.message)
        //获取全部数据
        const arr = data
        //使用ejs渲染
        res.render('index', { arr, n: arr.length })
    })

})

//处理用户添加事项
router.post('/add', CheckLogin, (req, res) => {
    //获取用户填写的内容
    const { title, detail } = req.body
    //获取用户当前计算机的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    //--------------------------------------------------------------------------------
    // //将用户填写的内容保存到数据库中-MongoDB
    // EventModel.create({
    //     userId: req.session.user.userId,
    //     title: title,
    //     detail: detail,
    //     time: time
    // }, (err, data) => {
    //     //使用ejs渲染(提醒用户添加成功)
    //     res.render('successRemind', { title: '添加事项成功', detail: '您的事项已成功添加到列表中。' })
    // })
    //--------------------------------------------------------------------------------
    //将用户填写的内容保存到数据库中-MySQL
    //定义sql语句
    const sqlStr = 'insert into events set ?'
    //数据准备
    const data = {
        userId: req.session.user.userId,
        title: title,
        detail: detail,
        time: time
    }
    //数据插入
    pool.query(sqlStr, data, (err, data) => {
        //操作失败
        if (err) return console.log('操作失败...' + err.message)
        //使用ejs渲染(提醒用户添加成功)
        res.render('successRemind', { title: '添加事项成功', detail: '您的事项已成功添加到列表中。' })
    })
})

//根据id来删除指定的文档
router.get('/delete/:id', CheckLogin, (req, res) => {
    //获取id
    const id = req.params.id
    // //根据id来删除指定的文档-MongoDB
    // EventModel.deleteOne({ id: id }, (err, data) => {
    //     //使用ejs渲染(提醒用户删除成功)
    //     res.render('successRemind', { title: '删除事项成功', detail: '您选择的事项已成功删除。' })
    // })
    //根据id来删除指定的文档-MySQL
    //定义sql语句
    const sqlStr = 'delete from events where id=?'
    //删除文档
    pool.query(sqlStr, id, (err, data) => {
        //操作失败
        if (err) return console.log('操作失败...' + err.message)
        //使用ejs渲染(提醒用户删除成功)
        res.render('successRemind', { title: '删除事项成功', detail: '您选择的事项已成功删除。' })
    })
})

//响应编辑事项页面
router.get('/change/:id', CheckLogin, (req, res) => {
    //获取id
    const id = req.params.id
    // //根据id读取指定文档-MongoDB
    // EventModel.findOne({ id: id }, (err, data) => {
    //     //使用ejs渲染(响应编辑事项页面)
    //     res.render('change', { id: id, title: data.title, detail: data.detail })
    // })
    //根据id读取指定文档-MySQL
    //定义sql语句
    const sqlStr = 'select * from events where id=?'
    //读取文档
    pool.query(sqlStr, id, (err, data) => {
        //操作失败
        if (err) return console.log('操作失败...' + err.message)
        //使用ejs渲染(响应编辑事项页面)
        res.render('change', { id: id, title: data[0].title, detail: data[0].detail })
    })
})

//处理用户保存修改事项
router.post('/change/:id', CheckLogin, (req, res) => {
    //获取id
    const id = req.params.id
    //获取用户填写的内容
    const { title, detail } = req.body
    //获取用户当前计算机的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    // //修改文档中的内容-MongoDB
    // EventModel.updateOne({ id: id }, {
    //     title: title,
    //     detail: detail,
    //     time: time
    // }, (err, data) => {
    //     //使用ejs渲染(提醒用户修改成功)
    //     res.render('successRemind', { title: '修改事项内容成功', detail: '' })
    // })
    //修改文档中的内容-MySQL
    //定义sql语句
    const sqlStr = 'update events set ? where id=?'
    //数据准备
    const data = {
        id: id,
        title: title,
        detail: detail,
        time: time
    }
    //更新文档
    pool.query(sqlStr, [data, data.id], (err, data) => {
        //操作失败
        if (err) return console.log('操作失败...' + err.message)
        //使用ejs渲染(提醒用户修改成功)
        res.render('successRemind', { title: '修改事项内容成功', detail: '' })
    })
})

//数据暴露
module.exports = router;
